E 控件
010 显示 Combo 的下拉条 98-8-11
声明:
Public Declare Function SendMessageLong Lib "user32" Alias
"SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal
wParam As Long, ByVal lParam As Long) As Long
Public Const CB_SHOWDROPDOWN = &H14F
使用:
'程序控制显示下拉条
r = SendMessageLong(Combo1.hWnd, CB_SHOWDROPDOWN, True, 0)
'程序控制隐藏下拉条
r = SendMessageLong(Combo1.hWnd, CB_SHOWDROPDOWN, False, 0)
009 确定 TextBox 有几行 98-8-11
声明:
Public Declare Function SendMessageLong Lib _ "user32" Alias
"SendMessageA" (ByVal hwnd As Long, _ ByVal wMsg As Long, ByVal wParam As Long,
ByVal lParam As Long) As Long
Public Const EM_GETLINECOUNT = &HBA
使用:
lineCount = SendMessageLong(Text1.hwnd, EM_GETLINECOUNT, 0&, 0&) 
008 TextBox 中英文输入方法切换 98-7-22
IMEMode 属性可以方便地控制输入方法:
Text1.IMEMode = 0 '初始值
Text1.IMEMode = 1 '中文输入
Text1.IMEMode = 2 '英文输入
Text1.IMEMode = 3 '禁止中文输入
007 利用API 使Text框只读 98-7-22
声明:
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA"
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Long) As
Long
Const WM_USER = &H400
Const EM_SETREADONLY = (WM_USER + 31)
使用:
' 例如使 TEXT1 只读
Dim RetVal As Long
RetVal = SendMessage(Text1.hwnd, EM_SETREADONLY, True, ByVal 0&)
与设置DISABLE 属性不同的是,TEXT1
只读后光标还是可以定位,并能支持多行的移动。
98-7-22 更新: 其实在 VB5 中的 Locked
属性也有类似的效果,更方便。
006 在 Textbox 中,录入 N 个字符后移到下栏
在 Textbox 的 Change 中加入:
IF (LEN(TEXT1)) >= N THEN
SENDKEY "{TAB}"
END IF
如果为中文和英文字符混合的情况,参见:AB010 
005 MaskEdit 中 9 的问题
如果你希望使用 "129.137.###.###" 作为 Mask,可能会出现你不希望的:
12_.137.___.___
解决方法如下:
MaskEdBox1.Text = "129.137.___.___"
MaskEdBox1.Mask = "129.137.###.###"
MaskEdBox1.SelStart = 8
004 自动选择 Text 的内容
在使用 VFP
的应用进行录入时,每进入一个录入框,就自动选择该框中的所有内容。利用以下的代码,也可实现类似的功能。
Private Sub MyTextBox_GotFocus()
AutoSelect MyTextBox
End Sub
Sub AutoSelect(SelObject As Control)
SelObject.SelStart = 0
If TypeOf SelObject Is MaskEdBox Then
SelObject.SelLength =
Len(SelObject.FormattedText)
Else
If TypeOf SelObject Is TextBox Then
SelObject.SelLength =
Len(SelObject.Text)
End If
End If
End Sub
003 处理 Dropdown List型 Combo的录入问题
当 Combo 的 Style 属性设置为 '2 - Dropdown List'
时,是只读的。这就意味着象 MyCombo.Text = "列表内容外"
这样的语句将可能导致一个错误。如果出现这样的情况时,能自动把
ListIndex 属性设置为 -1,而不是出错就好了。下面的代码完成这样的工作:
Function SetComboText(MyCombo as ComboBox, MyItem as String) as Integer
Dim I as Integer
For I = 0 to MyCombo.ListCount - 1
If MyCombo.List(I) = MyItem Then
SetComboText = I
Exit Function
End If
Next I
SetComboText = - 1
End Function
使用该函数:
AnyCombo.ListIndex = SetComboText(AnyCombo, "Any String")
如果 "Any String" 在列表中, ListIndex 将到正确的位置,
如果不在,自动把 ListIndex 属性设置为 -1。在 SetComboText = - 1
这行里,你可以增加你任何自己的处理代码。 
002 自定义Text的pop-up菜单
在 Windows 95, 右击 Textbox
将出现基本的编辑菜单。如果你想改变该菜单,可将以下的代码放到
Textbox 的 MouseDown 事件中。
If Button = vbRightButton Then
Text1.Enabled = False
Text1.Enabled = True
Text1.SetFocus
PopUpMenu Menu1
End If 
1. 放一个 ComboBox 到表单.
2. 放一个 Toolbar 在表单.
3. 增加下面的代码到 Form1 :
Private Sub Form_Load()
Dim btn As Button
Me.Show
Set btn = Toolbar1.Buttons.Add()
btn.Style = tbrSeparator
Set btn = Toolbar1.Buttons.Add()
btn.Style = tbrPlaceholder
btn.Key = "ComboBox"
btn.Width = 2000
With Combo1
.ZOrder 0
.Width = Toolbar1.Buttons("ComboBox").Width
.Top = Toolbar1.Buttons("ComboBox").Top
.Left = Toolbar1.Buttons("ComboBox").Left
End With
End Sub
|